Predictive emoji keyboards predict emoji based on what the user has typed. The words and phrases typed by the user are used as inputs for a prediction model and the prediction model is used to generate one or more predicted emojis to be presented to the user. The prediction model includes possible text inputs such as words and combinations of words, and can be implemented using a hashmap or dictionary loaded from a file in a format such as JavaScript Object Notation (JSON).
Each word or combination of words assigns a score to every emoji which is reflected in the model. For example, the combination of words “I love you” might associate a high score to the red heart emoji. If a user types in “I love you”, high scoring emojis associated with that phrase can be looked up in the prediction model, and the top scoring emojis can be presented to the user. Referring to FIG. 1, a longer text input 10 could be “Running late, be home in 30 mins”. The top three scoring emojis associated with this input text might be a running man emoji 12, a house emoji 14 and a clock emoji 16.
In order to support a large vocabulary of text inputs, the model may be very large: for example, 300 megabytes in JSON format. Unfortunately, the hashmap and dictionary data structures need to be fully loaded into primary Random Access Memory (RAM) from secondary memory such as the hard drive in order to be used efficiently. Calculating the predictions is therefore RAM-intensive and not suitable for running on personal computing devices such as mobile devices where RAM is a precious resource. As a result, either prediction models are loaded into RAM on servers and personal computing devices are required to communicate with the server via the Internet to request emoji predictions, or vastly reduced prediction models are used on the device with an impact on prediction quality.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known techniques.